package it.mauriziobasile.dietarapida.database;

import it.mauriziobasile.dietarapida.Alimento;
import it.mauriziobasile.dietarapida.Dieta;
import it.mauriziobasile.dietarapida.DietaRapidaApp;
import it.mauriziobasile.dietarapida.Porzione;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Iterator;

public class DietaPersistance {

    private static final String SEPARATOR = "@#@";

    public static void save(Dieta dieta, File file) throws IOException {
        FileWriter writer = new FileWriter(file);
        for (int i = 0; i < 5; i++) {
            Hashtable<Integer, Porzione> pasto = dieta.getPasto(i);
            Iterator<Porzione> keys = pasto.values().iterator();
            while (keys.hasNext()) {
                Porzione porz = keys.next();
                StringBuilder pst = new StringBuilder();
                pst.append(porz.getPasto() + SEPARATOR);
                pst.append(porz.getAlimento().getALI_ID() + SEPARATOR);
                pst.append(porz.getQuantita() + "\n");
                writer.write(pst.toString());
            }
        }
        writer.close();
        DietaRapidaApp.logger.info("Salvato con successo la dieta nel file: "+file.getPath());
    }

    public static Dieta load(File file) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line = br.readLine();
        Dieta dieta = new Dieta();
        while (line != null) {
            String[] prz = line.split(SEPARATOR);
            if (prz.length != 3) {
                line = br.readLine();
                continue;
            }
            Alimento alim = TabellaAlimenti.getInstance().getById(prz[1]);
            if (alim == null) {
                line = br.readLine();
                continue;
            }
            Porzione porzione = new Porzione(alim, Double.parseDouble(prz[2]),Integer.parseInt(prz[0]) );
            dieta.addToPasto(porzione);
            line = br.readLine();
        }
        DietaRapidaApp.logger.info("Caricata con successo la dieta dal file: "+file.getPath());
        return dieta;
    }
}
